﻿ #define  _CRT_SECURE_NO_WARNINGS 1
//LCR 004. 只出现一次的数字 II

//class Solution
//{
//public:
//    int singleNumber(vector<int>& nums)
//    {
//        int ret = 0;
//        for (int i = 0; i < 32; i++) // 依次去修改 ret 中的每⼀位
//        {
//            int sum = 0;
//            for (int x : nums)
//            {
//                if (((x >> i) & 1) == 1)
//                {
//                    sum++;
//                }
//
//                sum %= 3;
//            } // 计算nums中所有的数的第 i 位的和
//
//            if (sum == 1) ret |= 1 << i;
//        }
//        return ret;
//    }
//
//};





//LCR 004. 只出现一次的数字 san
//
//class Solution {
//public:
//    vector<int> singleNumber(vector<int>& nums)
//    {
//        int i = 0;
//        int ret = 0;
//        for (; i < nums.size(); i++)
//        {
//            ret ^= nums[i];
//        }
//
//        //得到a^b的结果！！
//        //然后求出a^b的第一个一的位数！
//        int pos = 0;
//        for (i = 0; i < 32; i++)
//        {
//            if (((ret >> i) & 1) == 1)
//            {
//                pos = i;
//                break;
//            }
//        }
//        vector<int>r(2);
//        for (i = 0; i < nums.size(); i++)
//        {
//            if (nums[i] >> pos & 1 == 1)
//            {
//                r[0] ^= nums[i];
//            }
//            else
//            {
//                r[1] ^= nums[i];
//            }
//        }
//        return r;
//    }
//};